﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace JasRibbonApplicatie.Views
{
    /// <summary>
    /// Interaction logic for ToebehorenLinkMateriaal.xaml
    /// </summary>
    public partial class ToebehorenLinkMateriaal : Page
    {
        jasEntities entities = new jasEntities();
        List<Item> materiaalList = new List<Item>();
        List<Item> toebehorenList = new List<Item>();
        List<LinkItem> LinkList = new List<LinkItem>();
        Item materiaal;
        Item toebehoren;

        public ToebehorenLinkMateriaal()
        {
            InitializeComponent();
            LinkMinButton.IsEnabled = false;
            FillMateriaalComboBox();
            FillToebehoren();
            //MaterialsInDatabase();
        }

        //public void MaterialsInDatabase()
        //{
        //    var linkitems = Queries.getAllLinkItems();
        //    LinkListBox.ItemsSource = linkitems;
        //}
        public void FillMateriaalComboBox()
        {
            var query = entities.materiaaltypes;
            foreach (var item in query)
            {
                materiaalList.Add(new Item(item.materiaalType_id,item.naam));
            }  
            materiaalComboBox.ItemsSource = materiaalList;
        }

        public void FillToebehoren()
        {
            var query = entities.toebehorentypes;
            foreach (var item in query)
            {
                toebehorenList.Add(new Item(item.toebehorenType_id, item.naam));
            }
            toebehorenComboBox.ItemsSource = toebehorenList;
        }

        private void LinkButton_Click(object sender, RoutedEventArgs e)
        {
            LinkenMateriaal();
            LinkMinButton.IsEnabled = true;
            
        }

        public void LinkenMateriaal()
        {
            int positie = 0;
            bool found = false;
            materiaal = (Item)materiaalComboBox.SelectedItem;
            toebehoren = (Item)toebehorenComboBox.SelectedItem;
            
            foreach (var item in LinkListBox.Items)
            {
                LinkItem link = (LinkItem)item;
                if (materiaal.Id == link.MateriaalId && toebehoren.Id == link.ToebehorenId)
                {
                    found = true;
                }

                if (!found)
                    positie++;
            }
            if (found)
            {
                LinkItem item = (LinkItem)LinkListBox.Items.GetItemAt(positie);
                int aantal = item.Aantal;
                LinkListBox.Items.RemoveAt(positie);
                LinkListBox.Items.Add(new LinkItem(materiaal.Id, toebehoren.Id, materiaal.Naam, toebehoren.Naam, aantal + 1));
            }
            else
            {
                LinkListBox.Items.Add(new LinkItem(materiaal.Id, toebehoren.Id, materiaal.Naam, toebehoren.Naam, 1));
            }
            positie = 0;
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            foreach (var link in LinkListBox.Items)
            {
                toebehorenmateriaal linkedmateriaal = new toebehorenmateriaal();
                LinkItem linkItem = (LinkItem)link;
                //controle werkt niet
                linkedmateriaal.materiaalType_id = linkItem.MateriaalId;
                linkedmateriaal.toebehorenType_id = linkItem.ToebehorenId;
                linkedmateriaal.aantal = linkItem.Aantal;
                entities.AddTotoebehorenmateriaal(linkedmateriaal);
                entities.SaveChanges();
            }
            MessageBox.Show("Database is bijgewerkt", "update", MessageBoxButton.OK);
            var beheermateriaal = Login.Instance.MainWindowReference.currentPage as BeheerMateriaal;
            if (beheermateriaal != null)
            {
                beheermateriaal.FillNodes();
            }
            LinkListBox.Items.Clear();
            materiaalComboBox.SelectedItem = null;
            toebehorenComboBox.SelectedItem = null;
        }

        private void LinkMinButton_Click(object sender, RoutedEventArgs e)
        {
            int positie = 0;
            bool found = false;
            materiaal = (Item)materiaalComboBox.SelectedItem;
            toebehoren = (Item)toebehorenComboBox.SelectedItem;
            foreach (var item in LinkListBox.Items)
            {
                LinkItem link = (LinkItem)item;
                if (materiaal.Id == link.MateriaalId && toebehoren.Id == link.ToebehorenId)
                {
                    found = true;
                }

                if (!found)
                    positie++;
            }
            if (found)
            {
                LinkItem item = (LinkItem)LinkListBox.Items.GetItemAt(positie);
                int aantal = item.Aantal - 1;
                if (aantal < 1)
                {
                    LinkListBox.Items.RemoveAt(positie);
                    LinkMinButton.IsEnabled = false;
                }
                else
                {
                    LinkListBox.Items.RemoveAt(positie);
                    LinkListBox.Items.Add(new LinkItem(materiaal.Id, toebehoren.Id, materiaal.Naam, toebehoren.Naam, aantal));
                }
            }
            else
            {
                LinkListBox.Items.Add(new LinkItem(materiaal.Id, toebehoren.Id, materiaal.Naam, toebehoren.Naam, 1));
            }
            positie = 0;

        }
    }
}
